import request from '@/utils/request'

// 用户签到
export function checkin(data) {
  return request({
    url: '/system/user/checkins/checkin',
    method: 'post',
    data: data
  })
}

// 检查用户今日是否已签到
export function checkinToday(userId) {
  return request({
    url: '/system/user/checkins/checkin/today/' + userId,
    method: 'get'
  })
}

// 获取用户连续签到天数
export function continuousDays(userId) {
  return request({
    url: '/system/user/checkins/continuous/' + userId,
    method: 'get'
  })
}

// 旅行地打卡
export function travelCheckin(data) {
  // 创建FormData对象
  const formData = new FormData();
  
  // 添加DTO数据（除了files字段）
  const { files, ...dtoData } = data;
  formData.append('travelCheckinDTO', new Blob([JSON.stringify(dtoData)], {
    type: 'application/json'
  }));
  
  // 添加文件数据
  if (files && files.length > 0) {
    files.forEach(file => {
      formData.append('travelFiles', file);
    });
  }
  
  return request({
    url: '/system/user/checkins/travel',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': undefined // 让浏览器自动设置Content-Type
    }
  })
}

// 获取附近打卡地点
export function nearby(lat, lng, meter) {
  return request({
    url: '/system/user/checkins/nearby',
    method: 'get',
    params: {
      lat,
      lng,
      meter
    }
  })
}

// 分页查询用户打卡记录
export function checkinsList(query) {
  return request({
    url: '/system/user/checkins/list',
    method: 'get',
    params: query
  })
}

// 获取用户上月获得的积分总和
export function sumPointsLastMonth(userId) {
  return request({
    url: '/system/user/checkins/sumPointsLastMonth/' + userId,
    method: 'get'
  })
}

// 撤销打卡记录
export function revoke(checkinId) {
  return request({
    url: '/system/user/checkins/revoke/' + checkinId,
    method: 'delete'
  })
}

// 恢复已撤销的打卡记录
export function restore(checkinId) {
  return request({
    url: '/system/user/checkins/restore/' + checkinId,
    method: 'put'
  })
}